TOP

SQL GROUP BY

SQL GROUP BY Beschreibung

Die Anweisung GROUP BY gruppiert Zeilen mit denselben Werten in Zusammenfassungszeilen, z. B. „Ermitteln Sie die Anzahl der Kunden in jedem Land“.

Die Anweisung GROUP BY wird häufig mit Aggregatfunktionen (COUNT(), MAX(), MIN(), SUM(), AVG()) verwendet, um eine Ergebnismenge nach einer oder mehreren Spalten zu gruppieren.


GROUP BY Syntax

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)

Demonstrationsdatenbank

Das Folgende ist ein Beispiel aus der Tabelle „Customers“ („Kunden“) der Datenbank „Northwind“:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL GROUP BY Beispiele

Die folgende SQL-Anweisung listet die Anzahl der Kunden in jedem Land auf:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country

Die folgende SQL-Anweisung listet die Kunden in jedem Land auf, sortiert vom höchsten zum niedrigsten Wert:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
ORDER BY COUNT(CustomerID) DESC

Demonstrationsdatenbank

Das Folgende ist ein Beispiel aus der Tabelle „Orders“ („Orders“) der Datenbank „Northwind“:

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

Und das Beispiel aus der Tabelle „Shippers“ („Senders“):

ShipperIDShipperNamePhone
1Speedy Express(503) 555-9831
2United Package(503) 555-3199
3Federal Shipping(503) 555-9931

GROUP BY zusammen mit JOIN Beispiel

Die folgende SQL-Anweisung listet die Anzahl der von jedem Absender gesendeten Bestellungen auf:

Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
LEFT JOIN Shippers 
ON Orders.ShipperID = Shippers.ShipperID 
GROUP BY ShipperName